// 加载jsonwebtoken模块（用于生成token加密串）
const jwt = require('jsonwebtoken');
const path = require('path');
const db = require(path.join(__dirname, '../utils', 'db'));
const utility = require('utility');
// 完成登录和注册
const express = require('express');
const router = express.Router();

// router.get('xxx', async (req, res) => {

// });

// 登录的接口
router.post('/login', async (req, res) => {
    // 假设账号是 admin，密码是 111111
    // 判断账号密码是否正确。
    // if (req.body.username === 'admin' && req.body.password === '111111') {
    let r = await db('select * from user where username=? and password=?', [req.body.username, utility.md5(req.body.password)]);
    // 如果账号密码正确，r是一个非空数组；如果错误，是一个空数组
    // console.log(r);
    if (r && r.length > 0) {
        // 登录成功
        res.json({
            status: 0,
            message: '登录成功',
            // token: 'Bearer ' + jwt.sign(要保存的信息, 秘钥, 配置项)
            // 生成的token前面必须有Bearer，还有一个空格。否则一会token不能正常的解密
            token: 'Bearer ' + jwt.sign({ username: req.body.username, id: r[0].id }, 'bigevent-9760', { expiresIn: '2 days' })
        });
    } else {
        res.json({
            status: 1,
            message: '登录失败'
        });
    }
        
    // }
});

// 注册的接口
router.post('/reguser', async (req, res) => {
    // 获取post请求体（也就是用户提交的账号和密码）
    // 添加到 user 表 中
    // console.log(req.body); // { username: 'admin', password: '111111' }
    // 对密码进行加密
    req.body.password = utility.md5(req.body.password);
    // 使用 Promise的catch方法
    let r = await db('insert into user set ?', req.body);
    // console.log(r); // 如果有错误，r===undefined。否则r是一个数组或对象
    if (r) {
        res.json({
            status: 0,
            message: '注册成功'
        });
    } else {
        res.json({
            status: 1,
            message: '注册失败'
        });
    }
    // 使用try...catch... 的方案
    // try {
    //     let r = await db('insert into user set ?', req.body);
    //     res.json({
    //         status: 0,
    //         message: '注册成功'
    //     });
    // } catch (err) {
    //     console.log(err.message); // 输出这个信息，是为了程序员排错
    //     res.json({
    //         status: 1,
    //         message: '注册失败'
    //     });
    // }
});

module.exports = router;